package com.newtouch.xcd.cms.service;

import com.newtouch.xcd.cms.entity.Trust;
import com.baomidou.mybatisplus.extension.service.IService;
import com.newtouch.xcd.cms.to.crm.CrmAssetAllocationProductIncomeItem;
import com.newtouch.xcd.cms.to.crm.CrmAssetAllocationProductItem;
import com.newtouch.xcd.cms.to.crm.CrmData;
import com.newtouch.xcd.common.utils.NumberUtils;

import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 信托立项 服务类
 * </p>
 *
 * @author dongyuefeng
 * @since 2020-05-21
 */
public interface TrustService extends IService<Trust> {

    List<Trust> queryByCustomId(String customId);


    Trust queryByXtNumber(String xtNumber);

    List<String> queryXtNumberList();

    /**
     * 通过信托编号计算信托总财产（A）
     * A=B+C2-D-E-F
     *
     * @param xtNumber 信托编号
     * @return
     */
    BigDecimal calTotalValueOfTrustProperty(String xtNumber, CrmData crmData);

    /**
     * 初始/追加信托财产
     * 直接取收入项的-初始/追加信托财产
     * B（金额-合计本金）
     *
     * @param xtNumber
     * @return
     */
    BigDecimal calInitialAdditionalTrustProperty(String xtNumber, CrmData crmData);

    /**
     * 查询-信托利益分配（已分配合计）
     * D（金额）
     *
     * @param xtNumber
     * @return
     */
    BigDecimal calDistributionOfTrustBenefits(String xtNumber, CrmData crmData);

    /**
     * 费用合计（保护人费用、受托人费用、其他费用）
     * E（金额）
     *
     * @param xtNumber
     * @return
     */
    BigDecimal calTotalFees(String xtNumber, CrmData crmData);

    /**
     * 信保基金占用
     * F（金额）
     *
     * @param xtNumber
     * @return
     */
    BigDecimal calCreditInsuranceFundOccupation(String xtNumber, CrmData crmData);

    /**
     * 信托的累计收益
     * 理财收益+股权投资收益+其他收益
     * C2（金额）
     *
     * @param xtNumber
     * @return
     */
    BigDecimal calC2(String xtNumber, CrmData crmData);

    /**
     * 资产配置
     * C1 = 支出项的资产配置
     * @param xtNumber
     * @param crmData
     * @return
     */
    BigDecimal calC1(String xtNumber,CrmData crmData);
}
